﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO_MechSys;
using BLL_MechSys;

namespace FORMS_MechSys
{
    public partial class frmEstoqueBaixa : Form
    {
        DTOProduto dtoProduto = new DTOProduto();
        BLLProduto bllProduto = new BLLProduto();
        BLLCategoria bllCategoria = new BLLCategoria();
        BLLFornecedor bllFornecedor = new BLLFornecedor();
        BLLFuncionario bllFuncionario = new BLLFuncionario();
        BLLBaixaEstoque bllBaixaEstoque = new BLLBaixaEstoque();

        DTOCor dtoCorFundo = new DTOCor();
        DTOCor dtoCorGrid= new DTOCor();
        DTOCor dtoCorLetras= new DTOCor();
        DTOCor dtoCorPrincipal = new DTOCor();
        BLLCor bllcor = new BLLCor();
        
        

        int FuncionarioIDBaixa;

        DTOBaixaEstoque dtoBaixaEstoque = new DTOBaixaEstoque();
        public frmEstoqueBaixa(int ProdutoID)
        {
            InitializeComponent();
            LoadProduto(ProdutoID);
            SetColors();
        }

        private void SetColors()
        {
            dtoCorFundo= bllcor.Buscar("Fundo");
            dtoCorLetras= bllcor.Buscar("Letra");
            dtoCorGrid= bllcor.Buscar("DataGrid");
            dtoCorPrincipal = bllcor.Buscar("Principal");

            btnSalvar.BackColor = tlpMenuStripCenter.BackColor = tlpMenuStripRigth.BackColor =
                tlp_dados.BackColor = lbl1.BackColor = tlpMenuStripLeft.BackColor = button1.BackColor =
                tlpCrud.BackColor = tlpJustificativa.BackColor = dtoCorPrincipal.Cor;
            tlpPrincipal.BackColor = this.BackColor = dtoCorFundo.Cor;
            btnSalvar.ForeColor = label1.ForeColor = label2.ForeColor = label3.ForeColor = 
                lbl1.ForeColor = lbl10.ForeColor = lbl2.ForeColor = lbl3.ForeColor = button1.ForeColor =
                lbl4.ForeColor = lbl5.ForeColor = lbl6.ForeColor = lbl7.ForeColor = lbl8.ForeColor = 
                rbtnEmLinha.ForeColor = rbtnForaLinha.ForeColor=
                lbl9.ForeColor = dtoCorLetras.Cor;
        }


        private void LoadProduto(int ProdutoID)
        {
            ListarFuncionariosCombo();
            dtoProduto = bllProduto.PesquisarProdutos("", ProdutoID)[0];
            txtCategoria.Text = bllCategoria.BuscarDescicaoPorCategoriaID(dtoProduto.CategoriaID).Descricao;
            txtCodigo.Text = dtoProduto.ProdutoID.ToString();
            txtDescricao.Text = dtoProduto.Descricao;
            txtEstoqueMinimo.Text = dtoProduto.EstoqueMinimo.ToString();
            txtFornecedor.Text = bllFornecedor.BuscarRazaoPorFornecedorID(dtoProduto.FornecedorID).Razao;
            txtQuantidade.Text = dtoProduto.Quantidade.ToString();
            txtValorCompra.Text = string.Format("{0:0.00}", dtoProduto.ValorCompra);
            txtValorVenda.Text = string.Format("{0:0.00}", dtoProduto.ValorCompra);
            numQuantidadeBaixa.Maximum = dtoProduto.Quantidade;
            if(numQuantidadeBaixa.Maximum>0)
                numQuantidadeBaixa.Value = 1;
            DTOFuncionario dtoFuncionario = bllFuncionario.PesquisarFuncionarios("", BLLUtilitarios.FuncionarioLogadoID)[0];
            cmbFuncionario.SelectedItem = dtoFuncionario.Nome + " " + dtoFuncionario.Sobrenome;
            FuncionarioIDBaixa = BLLUtilitarios.FuncionarioLogadoID;
            txtJustificativa.Focus();
        }

        private void ListarFuncionariosCombo()
        {
            List<DTOFuncionario> listdtoFuncionario = new List<DTOFuncionario>();
            listdtoFuncionario = bllFuncionario.BuscarFuncionariosCadastrados();

            cmbFuncionario.Items.Clear();
            for (int i = 0; i < listdtoFuncionario.Count; i++)
                cmbFuncionario.Items.Add(listdtoFuncionario[i].Nome + " " + listdtoFuncionario[i].Sobrenome);

        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            dtoBaixaEstoque.Data = DateTime.Now;
            dtoBaixaEstoque.FuncionarioID = FuncionarioIDBaixa;
            dtoBaixaEstoque.ProdutoID = Int32.Parse(txtCodigo.Text);
            dtoBaixaEstoque.Quantidade = (int)numQuantidadeBaixa.Value;
            dtoBaixaEstoque.Justificativa = txtJustificativa.Text;
            if (!string.IsNullOrWhiteSpace(txtJustificativa.Text))
            {
                bllBaixaEstoque.Inserir(dtoBaixaEstoque);
                new frmMessageBox().Show("Baixa de Produto realizada com Sucesso!");
                this.Close();
            }
            else
                new frmMessageBox().Show("O campo Justificativa não deve ficar em Branco.", "Campo em Branco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);


        }

        private void cmbFuncionario_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbFuncionario.SelectedItem.ToString() != BLLUtilitarios.FuncionarioLogado.ToString() && cmbFuncionario.SelectedIndex >=0)
            {
                frmSplashScreen frmSplash = new frmSplashScreen();
                frmSplash.ExibirLogin();
                frmSplash.ShowDialog();
                cmbFuncionario.SelectedItem = BLLUtilitarios.FuncionarioLogado;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
